A process executing in a device will invoke one or more functions to perform the actions of the executing process. At any point in the execution of the process, there is a stack of active frames that represent the call stack of these invoked functions. A backtrace is a report of the active stack frames of a process at a certain point in time during the execution of that process. In one embodiment, the backtrace is commonly used during interactive and post-mortem debugging. The backtrace allows a system analyzer to track a sequence of nested functions called up to the point where the backtrace is generated. In a post-mortem scenario, this is up to function where the failure occurred (but not necessarily caused there). A backtrace can also be gathered with a specified frequency to generate an execution profile of what functions are being used by the process.
A problem with a generating a backtrace at a fixed frequency, or also known as acquiring a stackshot, is that acquiring this stackshot can require a system interrupt, which can degrade the performance of the device that is acquiring the stackshot. In other words, in order to get an idea of how the process is executing, the stackshot acquisition can interfere with the running of the device. Thus, stackshot acquisition tends to be limited to debugging the device or a post-mortem analysis.